extends Node2D

# 冰面效果属性
@export var duration: float = 15.0  # 冰面持续时间
@export var slip_factor: float = 0.2  # 滑动因子（越小越滑）
@export var radius: float = 100.0  # 冰面半径

var time_alive: float = 0.0
var player = null

func _ready():
	# 获取玩家引用
	player = get_tree().get_first_node_in_group("player")
	
	# 设置初始缩放
	scale = Vector2(0.1, 0.1)
	
	# 设置碰撞区域
	$Area2D/CollisionShape2D.shape.radius = radius
	$Area2D.connect("body_entered", _on_body_entered)
	$Area2D.connect("body_exited", _on_body_exited)
	
	# 播放音效（如果有）
	if has_node("AudioStreamPlayer2D"):
		$AudioStreamPlayer2D.play()
	
	# 淡入效果
	var tween = create_tween()
	tween.tween_property(self, "scale", Vector2(1.0, 1.0), 0.5)

func _process(delta):
	# 更新生命周期
	time_alive += delta
	
	# 到达最大存活时间后消失
	if time_alive >= duration:
		# 淡出效果
		var tween = create_tween()
		tween.tween_property(self, "scale", Vector2(0.0, 0.0), 1.0)
		tween.tween_callback(queue_free)

func _on_body_entered(body):
	# 检查是否是玩家
	if body.is_in_group("player"):
		# 应用滑动效果
		if body.has_method("apply_ice_effect"):
			body.apply_ice_effect(slip_factor)
		else:
			# 备用方法
			body.friction = slip_factor

func _on_body_exited(body):
	# 检查是否是玩家
	if body.is_in_group("player"):
		# 移除滑动效果
		if body.has_method("remove_ice_effect"):
			body.remove_ice_effect()
		else:
			# 备用方法
			body.friction = 0.1  # 恢复默认摩擦力
